package com.dalianpai.gulimall.member.web;

import com.dalianpai.common.utils.R;
import com.dalianpai.gulimall.member.feign.OrderFiegnService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.HashMap;
import java.util.Map;

/**
 * @author WGR
 * @create 2020/8/12 -- 22:35
 */
@Controller
public class MemberWebController {

    @Autowired
    OrderFiegnService orderFiegnService;

    /**
     * 用户支付成功后，支付宝回调会员服务的这个地址，返回用户订单列表页面给用户
     * 会员服务通过feign调用订单服务的/order/order/listWithItem这个地址
     * 订单服务中配置的是只有("/order/order/status/**", uri) 或者 ("/payed/notify", uri) 不需要登录访问
     * 所以orderFiegnService.listWithItem(page);通过feign调用订单服务的这个方法是需要登录才可以访问的
     * feign底层调用使用的是RequestTemplate，在RequestTemplate中设置header(Cookie，request.getHeader("Cookie"))
     * 这个header为什么叫Cookie，是怎么起作用的？？？
     *
     * spring.session.store-type: redis 这就使用redis存储session
     *
     * //request.getSession()默认是取出jvm中的一个map，跟redis整合后取出的是redis中的一个对象
     * //从cookie中找到JSESSIONID=C458CE3A2B03AFA4C2AE1497036221CD，根据map的id=C458CE3A2B03AFA4C2AE1497036221CD就找到map，map就是这个session
     * //从cookie中找到JSESSIONID=C458CE3A2B03AFA4C2AE1497036221CD，根据redis的id=C458CE3A2B03AFA4C2AE1497036221CD就找到redis中的对象，redis中这个对象就是这个session
     * //只要登录后把cookie带过去，就可以根据cookie找到对应的session，这个session并且是登录的
     * MemberRespVo attribute = (MemberRespVo)request.getSession().getAttribute(AuthServerConstant.LOGIN_USER);
     */
    @GetMapping("/memberOrder.html")
    public String memberOrderPage(@RequestParam(value = "pageNum" ,defaultValue = "1") Integer pageNum, Model model){
        Map<String,Object> page = new HashMap<>();
        page.put("page",pageNum.toString());
        R r = orderFiegnService.listWithItem(page);
        model.addAttribute("orders",r);
        return "orderList";
    }


}
